namespace DeVierKoeden.Dynamicweb.CreateSite
{
  internal interface ISettings
  {
    bool DisableScheduledTasks { get; set; }
    /// <summary>
    /// The name of the site in IIS (which is also used as the host header for the site).
    /// </summary>
    string SiteName { get; set; }
    string ApplicationPoolName { get; set; }
    /// <summary>
    /// The root folder for IIS. Can be a Dynamicweb application folder when installing a standard site, or the site's Application folder in case a custom site is set up.
    /// </summary>
    string IisRootPath { get; set; }
    /// <summary>
    /// The path to the Admin folder that is used when the site is set up as a custom solution.
    /// </summary>
    string IisAdminFolder { get; set; }
    /// <summary>
    /// The path to the SQL .bak file used for this site.
    /// </summary>
    string DatabaseBackupPath { get; set; }
    /// <summary>
    /// The path to the data file (with default empty data) used for the /Files folder and database.
    /// </summary>
    string DataFile { get; set; }
    /// <summary>
    /// The root folder of the site on disk.
    /// </summary>
    string TargetFolder { get; set; }
    /// <summary>
    /// The /Application folder on disk when the site is set up as a custom solution.
    /// </summary>
    string TargetApplicationFolder { get; set; }
    /// <summary>
    /// The /Files folder on disk.
    /// </summary>
    string TargetFilesFolder { get; set; }
    /// <summary>
    /// The instance of SQL Server used by this site.
    /// </summary>
    string SqlServerInstance { get; set; }
    /// <summary>
    /// The name of the database in SQL Server.
    /// </summary>
    string DatabaseName { get; set; }
    /// <summary>
    /// The path to the physical .mdf SQL Server data file used for the new database.
    /// </summary>
    string DatabasePhysicalName { get; set; }
    /// <summary>
    /// The path to the physical .ldf SQL Server log file used for the new database.
    /// </summary>
    string DatabaseLogName { get; set; }

    /// <summary>
    /// The name of the custom SQL Server database.
    /// </summary>
    string CustomSqlDatabase { get; set; }

    /// <summary>
    /// The physical path to a ZIP file with the custom sources.
    /// </summary>
    string CustomZipSourceFile { get; set; }
    bool ResetPassword { get; set; }
    bool AnonymizeData { get; set; }
    ReplacementBehavior AnonymizationMethod { get; set; }
    bool MustCreateDatabase { get; }

    string ApplicationPoolAccount { get;  }

    string DwInstallRootFolder { get; set; }

    SolutionType SolutionType { get; set; }

    string BuildConnectionString();

  }
}
